﻿public interface IFSMMachine
{
	void ProccessState(IState state, object args = null);
}

public interface IState {
	int Priority { get; }
	bool IsDoing { get; set; }

	void OnEnter(object args = null);
	void OnStateFixedUpdate(object args = null);
	void OnStateUpdate(object args = null);
	void OnStateLateUpdate(object args = null);
	void OnExit(object args = null);
	bool IsComplete();
}